INFおよびNAN
TimesTenでは、IEEE浮動小数点値Inf(正の無限大)、-Inf(負の無限大)およびNaN(非数)がサポートされています。
定数値:
次の定数値がサポートされています。これらの値は、浮動小数点定数が許可されている場合に使用できます。
- BINARY_FLOAT_INFINITY
- -BINARY_FLOAT_INFINITY
- BINARY_DOUBLE_INFINITY
- -BINARY_DOUBLE_INFINITY
- BINARY_FLOAT_NAN
- BINARY_DOUBLE_NAN
次の例では、BINARY_FLOAT型の列およびTT_INTEGER型の列を含む表を作成します。BINARY_FLOAT_INFINITYおよびBINARY_FLOAT_NANは、BINARY_FLOAT型の列に挿入されます。
Command> CREATE TABLE BfDemo (Id BINARY_FLOAT, Id2 TT_INTEGER);
Command> INSERT INTO BfDemo VALUES (BINARY_FLOAT_INFINITY, 50);
1 row inserted.
Command> INSERT INTO BfDemo VALUES (BINARY_FLOAT_NAN, 100);
1 row inserted.
Command> SELECT * FROM BfDemo;
< INF, 50 >
< NAN, 100 >
2 rows found.
主キーの値
Inf、-InfおよびNaNは、主キーで定義された列で使用できる値です。これは、NULLの動作とは異なります。NULL値は、主キーで定義された列では使用できません。
BINARY_FLOAT列およびBINARY_DOUBLE列には、Inf、-InfおよびNaNの値のみ挿入できます。
InfおよびNaN(浮動小数点の条件)の選択:
浮動小数点の条件によって、式が無限大であるか、演算での未定義の結果(NaNまたは非数)であるかが判別されます。
構文:
Expression IS [NOT] {NAN| INFINITE};
Expression は、数値データ型、または数値データ型に暗黙的に変換可能なデータ型に解決される必要があります。
次の表に、浮動小数点の条件を示します。
条件
|
処理
|
例
|
IS [NOT] NAN | NOTを指定しないと、Expression が値NaNの場合にTRUEが戻されます。NOTを指定すると、Expression が値NaNでない場合にTRUEが戻されます。 | SELECT * FROM BfDemo WHERE Id IS NOT NAN; ID, ID2 < INF, 50 > 1 row found. |
IS [NOT] INFINITE | NOTを指定しないと、Expression が値+INFまたは-INFの場合にTRUEが戻されます。NOTを指定すると、Expressionが+INFと-INFのいずれでもない場合にTRUEが戻されます。 | SELECT * FROM BfDemo WHERE Id IS NOT INFINITE;
ID, ID2 < NAN, 100 > 1 row found. |
注意: | 定数キーワードは、特定のBINARY_FLOAT値およびBINARY_DOUBLE値を表します。比較キーワードは、値のプロパティに対応しており、いずれの型に対しても固有ではありません(ただし、BINARY_FLOAT型、BINARY_DOUBLE型、またはBINARY_FLOATやBINARY_DOUBLEに変換可能な型に対しては、TRUEとしてのみ評価されます)。 |
InfおよびNaNとの比較
次のルールが適用されます。
- Inf(または-Inf)と有限値の間での比較は、想定したとおりの結果になります。たとえば、5 > -Infなどです。
- (Inf = Inf)および(Inf > -Inf)は両方ともTRUEと評価されます。
- (NaN = NaN)はTRUEと評価されます。
照合順序に関しては次のように適用されます。
- -Infは、他のすべての値より低い優先順位でソートされます。
- Infは、他のすべての値より高い優先順位でソートされますが、NanおよびNULLより低い優先順位でソートされます。
- NaNは、Infより高い優先順位でソートされます。
- NULLは、NaNより高い優先順位でソートされます。NULLは、すべての照合順序で常に最大の値となります。
InfおよびNaNを含む式
- 浮動小数点値を含む式では、Inf、-InfまたはNaNが生成される場合があります。これらの値は、式でオーバーフローまたは例外状態が生成された場合、あるいは式内の1つ以上の値がInf、-InfまたはNaNの場合に生成される可能性があります。InfおよびNaNは、オーバーフローまたは0(ゼロ)による除算が条件の場合に生成されます。
- 集計関数では、Inf、-InfおよびNaNの値は無視されませんが、NULL値は無視されます。集計(または任意の選択)からInfおよびNaNを除外する場合は、IS NOT NAN条件およびIS NOT INFINITE条件の両方を使用します。